package com.ruoyi.merchant.domain;

import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 商家入驻申请对象 merchant_application
 * 
 * @author ruoyi
 * @date 2025-10-21
 */
public class MerchantApplication extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 申请记录唯一ID（自增主键） */
    private Long applicationId;

    /** 商家名称 */
    @Excel(name = "商家名称")
    private String merchantName;

    /** 商家类型（1=个体工商户，2=企业） */
    @Excel(name = "商家类型", readConverterExp = "1==个体工商户，2=企业")
    private Long merchantType;

    /** 联系人姓名 */
    @Excel(name = "联系人姓名")
    private String contactName;

    /** 联系电话（支持固定电话/手机号） */
    @Excel(name = "联系电话", readConverterExp = "支=持固定电话/手机号")
    private String contactPhone;

    /** 接收账号密码的电子邮箱 */
    @Excel(name = "接收账号密码的电子邮箱")
    private String contactEmail;

    /** 商家详细地址 */
    @Excel(name = "商家详细地址")
    private String address;

    /** 商家简介（最多200字） */
    @Excel(name = "商家简介", readConverterExp = "最=多200字")
    private String description;

    /** 营业执照图片存储路径 */
    @Excel(name = "营业执照图片存储路径")
    private String businessLicense;

    /** 身份证正面图片路径 */
    @Excel(name = "身份证正面图片路径")
    private String idCardFront;

    /** 身份证反面图片路径 */
    @Excel(name = "身份证反面图片路径")
    private String idCardBack;

    /** 其他资质证明图片路径（多个用逗号分隔） */
    @Excel(name = "其他资质证明图片路径", readConverterExp = "多=个用逗号分隔")
    private String otherCredentials;

    /** 是否同意协议（1=同意，0=未同意） */
    @Excel(name = "是否同意协议", readConverterExp = "1==同意，0=未同意")
    private Long agreeAgreement;

    /** 申请状态（0=待审核，1=审核通过，2=审核驳回） */
    @Excel(name = "申请状态", readConverterExp = "0==待审核，1=审核通过，2=审核驳回")
    private Long applicationStatus;

    /** 申请提交时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "申请提交时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applicationTime;

    public void setApplicationId(Long applicationId) 
    {
        this.applicationId = applicationId;
    }

    public Long getApplicationId() 
    {
        return applicationId;
    }

    public void setMerchantName(String merchantName) 
    {
        this.merchantName = merchantName;
    }

    public String getMerchantName() 
    {
        return merchantName;
    }

    public void setMerchantType(Long merchantType) 
    {
        this.merchantType = merchantType;
    }

    public Long getMerchantType() 
    {
        return merchantType;
    }

    public void setContactName(String contactName) 
    {
        this.contactName = contactName;
    }

    public String getContactName() 
    {
        return contactName;
    }

    public void setContactPhone(String contactPhone) 
    {
        this.contactPhone = contactPhone;
    }

    public String getContactPhone() 
    {
        return contactPhone;
    }

    public void setContactEmail(String contactEmail) 
    {
        this.contactEmail = contactEmail;
    }

    public String getContactEmail() 
    {
        return contactEmail;
    }

    public void setAddress(String address) 
    {
        this.address = address;
    }

    public String getAddress() 
    {
        return address;
    }

    public void setDescription(String description) 
    {
        this.description = description;
    }

    public String getDescription() 
    {
        return description;
    }

    public void setBusinessLicense(String businessLicense) 
    {
        this.businessLicense = businessLicense;
    }

    public String getBusinessLicense() 
    {
        return businessLicense;
    }

    public void setIdCardFront(String idCardFront) 
    {
        this.idCardFront = idCardFront;
    }

    public String getIdCardFront() 
    {
        return idCardFront;
    }

    public void setIdCardBack(String idCardBack) 
    {
        this.idCardBack = idCardBack;
    }

    public String getIdCardBack() 
    {
        return idCardBack;
    }

    public void setOtherCredentials(String otherCredentials) 
    {
        this.otherCredentials = otherCredentials;
    }

    public String getOtherCredentials() 
    {
        return otherCredentials;
    }

    public void setAgreeAgreement(Long agreeAgreement) 
    {
        this.agreeAgreement = agreeAgreement;
    }

    public Long getAgreeAgreement() 
    {
        return agreeAgreement;
    }

    public void setApplicationStatus(Long applicationStatus) 
    {
        this.applicationStatus = applicationStatus;
    }

    public Long getApplicationStatus() 
    {
        return applicationStatus;
    }

    public void setApplicationTime(Date applicationTime) 
    {
        this.applicationTime = applicationTime;
    }

    public Date getApplicationTime() 
    {
        return applicationTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("applicationId", getApplicationId())
            .append("merchantName", getMerchantName())
            .append("merchantType", getMerchantType())
            .append("contactName", getContactName())
            .append("contactPhone", getContactPhone())
            .append("contactEmail", getContactEmail())
            .append("address", getAddress())
            .append("description", getDescription())
            .append("businessLicense", getBusinessLicense())
            .append("idCardFront", getIdCardFront())
            .append("idCardBack", getIdCardBack())
            .append("otherCredentials", getOtherCredentials())
            .append("agreeAgreement", getAgreeAgreement())
            .append("applicationStatus", getApplicationStatus())
            .append("applicationTime", getApplicationTime())
            .append("remark", getRemark())
            .toString();
    }
}
